package com.itany.cloud.config;

import org.springframework.cloud.gateway.route.RouteLocator;
import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * Author:shixiaojun@itany.com
 * Date:2022/5/30 15:00
 * Version:1.0-SNAPSHOT
 * Description:
 */
@Configuration
public class GatewayConfig {

    /**
     * 通过注解方式配置某一个路由
     * 需要几个路由,就定义几个方法即可
     * @param builder
     * @return
     */
    @Bean
    public RouteLocator routeLocator(RouteLocatorBuilder builder){
        RouteLocatorBuilder.Builder routes = builder.routes();

        // 参数一:配置路由id,可以随便写,不能重复,具有唯一性
            // 一般情况下,会与将要转发的微服务挂钩
        // 参数二:JDK8引入的Function类型,其值使用Lambda表达式,表示访问地址
        // Lambda表达式存在两个方法调用
        // path:指定访问地址
        // uri:指定调用的远程服务是谁
        return routes.route("route_users",r -> r.path("/guonei").uri("http://news.baidu.com/guonei")).build();
    }
    @Bean
    public RouteLocator routeLocator2(RouteLocatorBuilder builder){
        RouteLocatorBuilder.Builder routes = builder.routes();

        // 参数一:配置路由id,可以随便写,不能重复,具有唯一性
            // 一般情况下,会与将要转发的微服务挂钩
        // 参数二:JDK8引入的Function类型,其值使用Lambda表达式,表示访问地址
        // Lambda表达式存在两个方法调用
        // path:指定访问地址
        // uri:指定调用的远程服务是谁
        return routes.route("route_users",r -> r.path("/campus").uri("https://baike.baidu.com/campus")).build();
    }

}
